#ifndef HOLIDAY_H
#define	HOLIDAY_H

#include <iostream>
#include <ctime>
#include <string>
#include <iomanip>
#include "DataStore.h"
#include "Mailbox.h"

using namespace std;

class tHoliday;

class Holiday {
    friend class tHoliday;
public:
    Holiday();
    virtual ~Holiday();
    void link(DataStore*, Mailbox*);

    // General Manager
    void createPackage();
    void deletePackage();
    void editPackage();
    void viewStatistics();

    //Holiday Manager
    void listBookers();

private:
    /* Print the HM details in format of such:
     * Holiday Manager 1000 (Antartica)(North Pole)(...)(...)
     * Holiday Manager 1001 (North Korea)(...)
     * ...
     */
    void printHMdetails();

    // This will return an integer of scale 0 - 5
    int countHMdest(const int);

    void printAllpackages();

    /* Basically these 2 functions are the same.
     * printCertainBookers. to print RefId, ClientId, ClientName
     * printClientAdd. to print ClientName, ClientAddress 
     */
    void printCertainBookers(const int);
    void printClientAdd(const int);

    // Update Package
    void updateDest(const int);
    void updateType(const int);
    void updateManager(const int);

    DataStore* ds;
    Mailbox* mb;
};

#endif	/* HOLIDAY_H */

